vlwkaos' digital garden

TypeScript - type inference

TypeScript는 일련의 규칙을 통해 변수가 어떤 type을 가지는지 예측해준다.

변수를 정의할 때 타입 추론

변수가 어떻게 정의되는가에 따라 타입이 추론된다.

let foo = 123; // number
let bar = "hello" // string
foo = bar; // 타입 추론에 의해 에러표시

함수 반환 타입

어떤 값이 반환 되는지에 따라 함수 반환 타입이 추론된다.

function add(a: number, b: number) {
    return a + b; // number
}

직접 주기

fooAdder type이라고 직접 명시해주었다. 그래서 a,bnumber임을 직접 명시하지 않아도 알 수 있다.

type Adder = (a: number, b: number) => number;
let foo: Adder = (a,b) => a+b;

structuring / destructuring

let foo = {
    a: 123,
    b: 456
}
// foo.a는 number로 추론됨
let {a} = foo; // a는 number

const bar = [1,2,3];
// bar[0]는 number로 추론됨
let [a, b, c] = bar; // a,b,c는 number

ℹ️ Type Guard를 이용하여 타입 추론의 범위를 좁혀나갈 수 있다.

literal type 종류에 따라 return type infer하기

// 예시
type ReturnValue = {
  string_argument: string;
  color_argument: string;
  object_argument: RandomObject[];
};
type ParameterType = keyof ReturnValue;

TypeScript - type inference